from torch import nn
import torch

# nn.Embedding 词向量维度表
# 10:  vocab_size 总共出现不重复的词的数量（注意：不包含重复值）。
# 3 : 每个词用3个维度来表示对应的值。
embedding = nn.Embedding(10, 3)
# (2,4): 2个批次（batch_size） 每个批次中有4个词
input = torch.LongTensor([[1, 2, 4, 5], [4, 3, 2, 9]])  # (2,4)
# 将input中的每个词放入embedding查询对应词的向量
print(embedding(input).shape)  # (2,4,3) 得到了每个词的向量表示

# padding_idx=0 所指 <pad> 补齐长度的方式  此处的0为<pad>的序列
# hello <pad> <pad> <pad>
# nice to meet you
embedding = nn.Embedding(10, 3, padding_idx=1)
input = torch.LongTensor([[1, 2, 1, 5]])  # (1,4)
print(embedding(input))  # <pad>位置所对应的维度全为0, 可以防止梯度求解消耗资源（<pad>不是真正的内容，
# 因此不需要参与反向传播）
